/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controller;

import java.util.ArrayList;
import org.springframework.web.servlet.mvc.Controller;
import java.util.HashMap;
import java.util.Map;
import org.apache.log4j.*;
import org.apache.log4j.xml.DOMConfigurator;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractCommandController;
import model.Usuario;
import model.Amigo;
import java.util.List;
import org.springframework.beans.support.PagedListHolder;
import service.UsuarioService;
import service.amigoService;

/**
 *
 * @author MIS DOCUMENTOS
 */
public class BuscarAmigosResp implements Controller {

    private UsuarioService usuarioService;
    private amigoService amigoService;
    private static Logger loggers = null;

    public void setUsuarioService(UsuarioService usuarioService) {
        this.usuarioService = usuarioService;
    }

    public void setAmigoService(amigoService amigoService) {
        this.amigoService = amigoService;
    }

    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
        Map model = new HashMap();
        Usuario user2;
        user2 = (Usuario) usuarioService.getUsuario(Long.parseLong(request.getParameter("ux")));
        System.out.println(request.getParameter("ux"));
        System.out.println(request.getParameter("nombre1"));

        PagedListHolder pagedListHolder = (PagedListHolder) request.getSession().getAttribute("clienteList");

        if (request.getParameter("nombre1") != null) {
            Usuario user1;
            Amigo ami;
            List user;
            List misAmigos = new ArrayList();
            user = amigoService.getMisAmigos(Long.parseLong(request.getParameter("ux")));
            for (int i = 0; i < user.size(); i++) {
                ami = (Amigo) user.get(i);
                Long numAmigo;
                numAmigo = ami.getUsuarioByFkAmigo1().getIdUsuario();
                if (numAmigo == Long.parseLong(request.getParameter("ux"))) {
                    Long numAmigo1;
                    numAmigo1 = ami.getUsuarioByFkAmigo2().getIdUsuario();
                    user1 = (Usuario) usuarioService.getUsuario(numAmigo1);
                    misAmigos.add(user1);
                } else {
                    user1 = (Usuario) usuarioService.getUsuario(numAmigo);
                    misAmigos.add(user1);
                }
            }

            System.out.println("aqui vamos");
            List buscar;
            List buscados = new ArrayList();
            Usuario c1;
            Usuario c2;
            String valor = "no";
            buscar = usuarioService.getUsuarioBuscar(request.getParameter("nombre1"));
            for (int i = 0; i < buscar.size(); i++) {
                c1 = (Usuario) buscar.get(i);
                for (int j = 0; j < misAmigos.size(); j++) {
                    c2 = (Usuario) misAmigos.get(j);
                    if (c1.getIdUsuario().equals(c2.getIdUsuario())) {
                        valor = "si";
                    }
                }
                if (valor.equals("no")) {
                    buscados.add(c1);
                }
            }
            pagedListHolder = new PagedListHolder(buscados);
        } else {
            String page = (String) request.getParameter("page");
            if ("next".equals(page)) {
                pagedListHolder.nextPage();
            } else if ("previous".equals(page)) {
                pagedListHolder.previousPage();
            }
        }

        request.getSession().setAttribute("clienteList", pagedListHolder);
        model.put("clienteList", pagedListHolder);
        model.put("usuario", user2);
        return new ModelAndView("ResultadoBuscarAmigos", model);
    }
}
